﻿namespace Known.EntityFramework;

/// <summary>
/// 依赖注入扩展类。
/// </summary>
public static class Extension
{
    /// <summary>
    /// 添加支持EntityFramework数据访问。
    /// 原生SQL查询继承框架Database。
    /// </summary>
    /// <param name="services">服务集合。</param>
    /// <param name="action">EntityFramework配置。</param>
    public static void AddKnownEntityFramework(this IServiceCollection services, Action<DbContextOption> action)
    {
        services.AddScoped<Database, EFCoreDatabase>();

        DataContext.Option = new DbContextOption();
        action?.Invoke(DataContext.Option);
    }
}

/// <summary>
/// EFCore数据库上下文选项类。
/// </summary>
public class DbContextOption
{
    /// <summary>
    /// 取得或设置数据库上下文配置委托。
    /// </summary>
    public Action<DbContextOptionsBuilder> OnConfig { get; set; }

    /// <summary>
    /// 取得或设置数据库模型创建配置委托。
    /// </summary>
    public Action<ModelBuilder> OnModel { get; set; }
}